package com.ply.flashsalessystem.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ply.flashsalessystem.entity.pojo.OrderForGoods;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ply.flashsalessystem.entity.pojo.ShopCar;
import com.ply.flashsalessystem.entity.result.Result;
import com.ply.flashsalessystem.entity.vo.store.OrderForStoreVo;
import com.ply.flashsalessystem.entity.wrapper.WrapperOrder;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author XiaoPan
 * @since 2022-03-23
 */
public interface OrderForGoodsService extends IService<OrderForGoods> {

    Page<OrderForStoreVo> queryOrder(Integer current, Integer limit, WrapperOrder wrapperOrder);

    /**
     * 更新 一系列的 订单状态
     *
     * @param orderIdList 所有要修改的订单
     * @param status      要修改的状态
     * @return 修改成功 失败
     */
    boolean updateOrderStatusById(List<Integer> orderIdList, Integer status);

    /**
     * 创建订单
     * @param storeId   商家id
     * @param list  购物车列表
     */
    boolean createOrder(Long storeId, List<ShopCar> list);


    /**
     * 将商品打包
     * @param org_d_id
     * @return
     */
    boolean updateStatusToPicket(Integer org_d_id,double goodsNums);

    void userCancelOrder(Integer ofgID);


    /**
     * 取消订单
     * @param ofgID 订单id
     */
    void cancelOrder(Integer ofgID);




    /*
    订单 状态 改变
     */
    // 未付款 -> 已付款               前提: 未付款
    boolean statusToDoPay(Integer ofgId);

    // 已付款 -> 已发货 也就是 分拣完成   前提: 已付款
    boolean statusToDelivery(Integer ofgId);

    // 已发货 -> 店家已签收         前提: 已发货
    boolean statusToStoreDoSign(Integer ofgId);

    // 店家已签收 -> 用户已签收         前提: 店家已签收
    boolean statusToUserDoSign(Integer ofgId);

    // 用户已签收 -> 订单结束         前提: 用户已签收
    boolean statusToEnd(Integer ofgId);

    // 将状态 修改 未 异常
    boolean statusToError(Integer ofgId);

    //将状态设置位 取消
    boolean statusToChanel(Integer ofgId);

}
